/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;

/**
 *
 * @author diego
 */
@Entity
public class Evento implements Serializable {
    
    @Id    
    @Column(name="EVENTO_ID")
    private Integer id;
    
    @Basic
    private String nombre;
    
    @Basic
    private String descripcion;
    
    @Basic
    private boolean activo;
    
    @OneToMany(mappedBy="evento")    
    @JoinTable(name="EVENTO_FUNCION",joinColumns={@JoinColumn(name="EVENTO_ID", referencedColumnName="EVENTO_ID")},inverseJoinColumns={@JoinColumn(name="FUNCION_ID",referencedColumnName="FUNCION_ID", unique=true)})
    private Set<Funcion> funciones;

    public Evento() {
    }

    public Evento(Integer id, String nombre, String descripcion, boolean activo) {
        this.id = id;
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.activo = activo;
        this.funciones = new HashSet();
        
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public boolean isActivo() {
        return activo;
    }
    public boolean getActivo(){
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public Set<Funcion> getFunciones() {
        return funciones;
    }

    public void setFunciones(Set<Funcion> funciones) {
        this.funciones = funciones;
    }
    
    public String toString(){
        return this.nombre;
    }
    
    
    
    
    public Set<Funcion> obtenerFunciones(){
        Set<Funcion> funcionesActivas = new HashSet();
        
        Iterator iterator = this.getFunciones().iterator();
        while(iterator.hasNext()){
            Funcion unaFuncion = (Funcion) iterator.next();
            if(unaFuncion.isActiva()){
                funcionesActivas.add(unaFuncion);
            }    
        }
        return funcionesActivas;
    }
    
    public Set<Funcion> funcionesActivas(){
        Set<Funcion> funciones = new HashSet();
        Iterator it = this.getFunciones().iterator();
        Funcion unaFuncion;
        while(it.hasNext()){
            unaFuncion = (Funcion) it.next();
            if(unaFuncion.isActiva()){
                funciones.add(unaFuncion);
            }
        }
        return funciones;
    }
    
}
